1.6. VS Code
What is Visual Studio Code?
Visual Studio Code (VS Code) is a free, open-source code editor from Microsoft that has become the de-facto standard for modern software development. It combines the simplicity of a text editor with powerful Integrated Development Environment (IDE) features. Its lightweight nature, combined with a vast ecosystem of extensions, makes it an ideal choice for Python and MLOps development, where versatility and performance are key.
Why is VS Code the right choice for MLOps?
For MLOps professionals, a powerful and adaptable editor is non-negotiable. VS Code excels by providing:
- High-Performance Editing: Get intelligent code completion with IntelliSense, seamless code navigation, and immediate feedback without the heavy footprint of traditional IDEs.
- Unmatched Extensibility: The Marketplace lets you tailor your environment precisely for MLOps tasks, with extensions for Python, Docker, Kubernetes, cloud platforms, and more.
- Seamless Workflow Integration: Manage your entire workflow in one place. Use the Integrated Terminal to run experiments, Source Control to manage code with Git, and powerful Debugging Tools to troubleshoot models and pipelines.
- Remote Development: Connect to remote servers, containers, or the Windows Subsystem for Linux (WSL) as if they were local. This is critical for training models on powerful cloud instances or ensuring consistent development environments.
How do you install VS Code?
Installing VS Code is straightforward:
- Navigate to the official VS Code website.
- Download the appropriate installer for your operating system (Windows, macOS, or Linux).
- Run the installer and follow the on-screen instructions.
Where can you master VS Code?
To accelerate your learning curve, explore these excellent resources:
- Official Documentation: The definitive source for every feature.
- VS Code Tips and Tricks: A collection of shortcuts and best practices to boost your productivity.
- Microsoft Learn: Free, hands-on tutorials for various development scenarios.
- Official YouTube Channel: Visual guides and tutorials for all skill levels.
Which extensions are essential for MLOps?
A stock VS Code editor is powerful, but extensions unlock its true potential for MLOps. We've curated a list of extensions, categorized into tiers, to build a professional-grade development environment. You can install them directly from the VS Code Marketplace.
Which VS Code extensions should you install for MLOps?
This section lists the extensions you can install from VS Code Marketplace:
A Tier: The Must
- donjayamanne.python-extension-pack: ultimate pack for Python development: autoDocString, Python, Jinja, IntelliCode, Python Indent, Python Environment Manager, Django.
- donjayamanne.python-environment-manager: access and manage your Python environments (venv).
- KevinRose.vsc-python-indent: improve the default indentation for Python files.
- astral-sh.ty: the official extension for
ty, Astral's extremely fast Python type checker and language server. Great to validate your typing as you code. - ms-python.python: language support for Python (linting, debugging, code formating, and more).
- ms-python.vscode-pylance: enhanced language server for Python (static checker, intellicode, …).
- ms-toolsai.jupyter: extension pack for Jupyter Notebooks: Keymap, Slideshow, Notebook Renderer, and Cell Tags.
- ms-toolsai.jupyter-keymap: keybindings from Jupyter Notebooks.
- ms-toolsai.jupyter-renderers: render notebook outputs (e.g., plots).
- ms-toolsai.vscode-jupyter-cell-tags: edit cell tags in notebooks (i.e., metadata used by some plugins).
- charliermarsh.ruff: A Visual Studio Code extension for Ruff, an extremely fast Python linter and code formatter, written in Rust.
B Tier: The Great
- alefragnani.project-manager: organize, manage, and access VS Code workspaces and Git repositories.
- ms-azuretools.vscode-docker: manage and connect to Docker through VS Code.
- ms-kubernetes-tools.vscode-kubernetes-tools: everything you need to develop Kubernetes applications from VS Code.
- ms-vscode-remote.remote-containers: develop your code from a Docker container instead of your local system.
- ms-vscode-remote.remote-ssh: connect to a remote instance for editing files and developing your project.
- ms-vscode-remote.remote-ssh-edit: language support for SSH configuration files.
- ms-vscode-remote.vscode-remote-extensionpack: extension pack for remote developments: Dev Containers, Remote SSH, Remote Tunnels, WSL.
- ms-vscode.remote-explorer: view remote machines (SSH) and tunnels.
- ms-vscode.remote-repositories: remotely browse and edit git repositories.
- ms-vsliveshare.vsliveshare: edit code from your colleague computer (and vice versa). Useful for collaboration and troubleshooting.
- mutantdino.resourcemonitor: display the resource usage of your system in the status bar (CPU, RAM, …). Always useful for data projects.
- njpwerner.autodocstring: automatically generate Python docstrings from object definitions.
- redhat.vscode-yaml: YAML language support. Great file format for configuring your application.
- streetsidesoftware.code-spell-checker: highlight and fix spelling mistakes in your code.
- tamasfe.even-better-toml: TOML language support. Improve the edition of your
pyproject.tomlfile. - usernamehw.errorlens: display warnings and errors next to your code (instead of a dedicated window).
- VisualStudioExptTeam.vscodeintellicode: AI-assisted development features for VS Code.
- yzhang.markdown-all-in-one: tons of feature for editing Markdown files (shortcuts, table of content, language support, …).
C Tier: The Good
- aaron-bond.better-comments: highlight comments based on a prefix (e.g., *, !, ?, TODO, …).
- bierner.markdown-mermaid: display Mermaid diagrams in Markdown. Great to share and visualize complex concepts and design decisions.
- christian-kohler.path-intellisense: autocomplete file paths on your system.
- donjayamanne.githistory: visualize your Git history (files, branches, commits, …).
- eamodio.gitlens: enhanced your git experience (e.g., git blame, code lens, …).
- GitHub.remotehub: remotely browse and edit GitHub repositories.
- github.vscode-github-actions: manage GitHub Actions workflows from VS Code.
- GitHub.vscode-pull-request-github: manage GitHub Pull Requests from VS Code.
- Gruntfuggly.todo-tree: view all TODO, FIXME, and other annotations from a Tab.
- IBM.output-colorizer: syntax highlighting for log files.
- jebbs.plantuml: create UML diagrams to document your project.
- mechatroner.rainbow-csv: colorize the columns of CSV files to improve their readability.
- mhutchie.git-graph: view and edit your git graph (tags, branches, stashes, …).
- mikestead.dotenv: syntax highlighting for dotenv files (i.e., contain the environment variables of your program).
- ms-vscode.live-server: host a local server for web development.
- oderwat.indent-rainbow: make code indentation more readable.
- pomdtr.excalidraw-editor: edit Excalidraw diagrams. Great to design architecture diagrams during brainstorm sessions.
- sleistner.vscode-fileutils: create, copy, move, rename, and delete files from VS Code commands.
- vsls-contrib.gistfs: manage and share code snippets on GitHub Gist.
- wayou.vscode-todo-highlight: highlight TODO, FIXME and other keywords in your comments.
- wholroyd.jinja: language support for Jinja. Popular template language for substituting variables in text files.
How should you configure VS Code for MLOps?
Keep project settings small and share the settings needed to run the same tools:
{
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
"python.testing.pytestEnabled": true,
"python.testing.unittestEnabled": false,
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {"source.organizeImports": "explicit"}
}
}
On Windows, select .venv\Scripts\python.exe. Install Ruff, ty, and Jupyter extensions, and select the same .venv as the notebook kernel. Keep normal workspace trust and confirmation settings. The reference workspace contains the maintained project configuration.
How do you create project-specific settings?
While user settings apply globally, you can define settings specific to a project to ensure consistency across a team. This is a core MLOps practice, as it standardizes the development environment for anyone who clones the repository.
- Create a folder named
.vscodeat the root of your project. - Inside this folder, create a file named
settings.json. - Add any project-specific configurations to this file.
VS Code will automatically apply these settings when you open the project folder.
Example .vscode/settings.json:
This configuration automatically enables the Ruff formatter and turns on Pytest for any team member opening the project.
{
// Define Python-specific settings for this project
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
},
// Enable the project's chosen testing framework
"python.testing.pytestEnabled": true
}
How do you connect the Jupyter extension to your uv environment?
To ensure VS Code's Jupyter extension uses the correct packages from your uv-managed environment, you must point it to the right Python interpreter. This enables features like IntelliSense and debugging to work seamlessly within your notebooks.
- Open Your Project: Launch VS Code from the root of your project directory (the one containing
pyproject.tomland.venv). - Select the Interpreter:
- Open the Command Palette (
Ctrl+Shift+PorCmd+Shift+P). - Type and select Python: Select Interpreter.
- Choose the interpreter associated with your project. VS Code usually recommends the correct one, often labeled with
.venvand identified as a virtual environment.
- Open the Command Palette (
- Verify the Connection:
- Create or open a Jupyter Notebook (
.ipynbfile). - Click the kernel selector in the top-right corner.
- Confirm that the selected kernel points to the same
.venvPython interpreter you chose in the previous step.
- Create or open a Jupyter Notebook (
Now, any packages you add to your project with uv add <package-name> will be immediately available in your Jupyter notebooks.